#include <cstring>
#include <iostream>
using namespace std;

const int M = 2048; // 开得略大一点
bool adj[M][M]; // 接触关系
char tag[M]; // 分类：tag[x]表示人员x的分类标签（A/B/C/D）

void load(const int C, const int P){
  memset(adj,   0, sizeof(adj)); // 每轮都要初始化。
  memset(tag, 'D', sizeof(tag)); // 默认D类
  for(int i = 0, u, v; i < C; ++i){
    cin >> u >> v;
    // TODO: 设置u, v接触关系（双向的）
  }
  for(int i = 0, u; i < P; ++i){
    cin >> u;
    // TODO: 设置阳性人员的tag[]
  }
}

void mark(const int N, char src, char cls){
  for(int u = 1; u <= N; ++u){
    // TODO: 只处理src类人员，略过其余。
    for(int v = 1; v <= N; ++v){
      // TODO: 与源类src接触的标记为cls类。不要误改高风险类别。
    }
  }
}

void save(const int N, const string& ymd){
  cout << ymd << '\n';
  for(int u = 1; u <= N; ++u){
    if(tag[u] != 'D'){
      cout << u << ' ' << tag[u] << '\n';
    }
  }
}

int main(){
  for(string ymd; cin >> ymd;){
    int N, C, P;
    cin >> N >> C >> P;
    load(C, P);
    mark(N, 'A', 'B'); // 与A类接触的标为B类
    mark(N, 'B', 'C'); // 与B类接触的标为C类
    save(N, ymd);
  }
  return 0;
}
